home *** CD-ROM | disk | FTP | other *** search
/ Aminet 1 (Walnut Creek) / Aminet - June 1993 [Walnut Creek].iso / usenet / sources / volume2 / comm / vt100r2a.1
Internet Message Format  |  1988-12-06  |  33KB

  1. Path: xanth!ames!ncar!mailrus!ulowell!page
  2. From: page@swan.ulowell.edu (Bob Page)
  3. Newsgroups: comp.sources.amiga
  4. Subject: v02i090:  vt100 - terminal emulator v2.8a
  5. Message-ID: <10493@swan.ulowell.edu>
  6. Date: 5 Dec 88 22:50:32 GMT
  7. Organization: University of Lowell, Computer Science Dept.
  8. Lines: 930
  9. Approved: page@swan.ulowell.edu
  10.  
  11. Submitted-by: acs@amdahl.com (Tony Sumrall)
  12. Posting-number: Volume 2, Issue 90
  13. Archive-name: comm/vt100r28a.1
  14.  
  15. [These are context diffs that you can apply to your original vt100 v2.8
  16. source code to bring it up to v2.8a.  ..Bob]
  17.  
  18. #    This is a shell archive.
  19. #    Remove everything above and including the cut line.
  20. #    Then run the rest of the file through sh.
  21. #----cut here-----cut here-----cut here-----cut here----#
  22. #!/bin/sh
  23. # shar:    Shell Archiver
  24. #    Run the following text with /bin/sh to create:
  25. #    2.8to2.8a
  26. #    README
  27. # This archive created: Mon Dec  5 17:46:59 1988
  28. cat << \SHAR_EOF > 2.8to2.8a
  29. Prereq: 880117
  30. diff -c old/init.c new/init.c
  31. *** old/init.c    Sat May 28 00:40:16 1988
  32. --- new/init.c    Sat May 28 00:27:09 1988
  33. ***************
  34. *** 1,7 ****
  35.   /***************************************************************
  36.    * vt100 - terminal emulator - initialization
  37.    *
  38. !  *    v2.8 880117 ACS - See the README file
  39.    *    v2.7 870825 ACS - Allow execution of all script files specified on
  40.    *              command line (companion to changes in script.c).
  41.    *              Rolled menu init into one routine (do_menu_init()).
  42. --- 1,9 ----
  43.   /***************************************************************
  44.    * vt100 - terminal emulator - initialization
  45.    *
  46. !  *    v2.8a 880510 ACS - Allow lines 0 in init file to *really* mean
  47. !  *              "use all available lines".
  48. !  *    v2.8 880117 ACS - See vt100.doc.
  49.    *    v2.7 870825 ACS - Allow execution of all script files specified on
  50.    *              command line (companion to changes in script.c).
  51.    *              Rolled menu init into one routine (do_menu_init()).
  52. ***************
  53. *** 211,218 ****
  54.   char    **argv;
  55.       {
  56.       FILE    *fd = NULL;
  57. !     char    *p, *t, *ifile;
  58. !     int     l, dont_init = 0;
  59.   
  60.       doing_init = 1;    /* make sure we only allow INIT script commands */
  61.       if (argc > 1) {
  62. --- 213,220 ----
  63.   char    **argv;
  64.       {
  65.       FILE    *fd = NULL;
  66. !     char    *p = NULL, *t, *ifile;
  67. !     int     l, dont_init = 0, lines0, maxrows;
  68.   
  69.       doing_init = 1;    /* make sure we only allow INIT script commands */
  70.       if (argc > 1) {
  71. ***************
  72. *** 277,295 ****
  73.       cleanup("can't open graphics library",2);
  74.   
  75.       /* Now set up all the screen info as necessary */
  76. !     if(p_lines == 0)    /* Wants to use everything available */
  77. !         if(p_interlace)
  78. !         p_lines = ((GfxBase->NormalDisplayRows*2) - 6) / 8;
  79. !         else
  80. !         p_lines = ((GfxBase->NormalDisplayRows - 6) / 8);
  81.   
  82.       if (p_interlace == 0) {
  83. !     if (p_lines > 24) p_lines = 24;
  84.       MINY = 14;
  85.       NewWindow.Height    = (long)((p_lines*8)+8);
  86.       }
  87.       else {
  88. !     if (p_lines > 48) p_lines = 48;
  89.       MINY = 16;
  90.       NewScreen.ViewModes |= LACE;
  91.       NewWindow.Height    = (long)((p_lines*8)+10);
  92. --- 279,301 ----
  93.       cleanup("can't open graphics library",2);
  94.   
  95.       /* Now set up all the screen info as necessary */
  96. !     maxrows = GfxBase->NormalDisplayRows;
  97. !     if((p_screen == 0) && ((IntuitionBase->ViewLord.Modes & LACE) == 0))
  98. !     p_interlace = 0;
  99.   
  100. +     if(p_interlace)
  101. +     maxrows *= 2;
  102. +     if(lines0 = (p_lines == 0))    /* Wants to use everything available */
  103. +     p_lines = (maxrows - 6) / 8;
  104.       if (p_interlace == 0) {
  105. !     if (!lines0 && p_lines > 24) p_lines = 24;
  106.       MINY = 14;
  107.       NewWindow.Height    = (long)((p_lines*8)+8);
  108.       }
  109.       else {
  110. !     if (!lines0 && p_lines > 48) p_lines = 48;
  111.       MINY = 16;
  112.       NewScreen.ViewModes |= LACE;
  113.       NewWindow.Height    = (long)((p_lines*8)+10);
  114. ***************
  115. *** 310,318 ****
  116.       NewScreen.Height    = (long)((p_lines*8)+16);
  117.   
  118.       if (p_interlace == 1)
  119. !         NewScreen.TopEdge    = (long)(400 - NewScreen.Height);
  120.       else
  121. !         NewScreen.TopEdge    = (long)(208 - NewScreen.Height);
  122.       }
  123.       else {
  124.       p_depth            = 2L;
  125. --- 316,324 ----
  126.       NewScreen.Height    = (long)((p_lines*8)+16);
  127.   
  128.       if (p_interlace == 1)
  129. !         NewScreen.TopEdge    = (long)(maxrows - NewScreen.Height);
  130.       else
  131. !         NewScreen.TopEdge    = (long)((maxrows+8) - NewScreen.Height);
  132.       }
  133.       else {
  134.       p_depth            = 2L;
  135. ***************
  136. *** 324,330 ****
  137.       }
  138.   
  139.       /* see if we exit with a startup script */
  140. !     if (*p == 'e') {
  141.       p = next_wrd(p+l+1,&l);
  142.       if (*p) return(p);
  143.       }
  144. --- 330,336 ----
  145.       }
  146.   
  147.       /* see if we exit with a startup script */
  148. !     if (p && *p == 'e') {
  149.       p = next_wrd(p+l+1,&l);
  150.       if (*p) return(p);
  151.       }
  152. Prereq: 880117
  153. diff -c old/kermit.c new/kermit.c
  154. *** old/kermit.c    Sat May 28 00:40:16 1988
  155. --- new/kermit.c    Sat May 28 00:27:09 1988
  156. ***************
  157. *** 1,7 ****
  158.   /*************************************************************
  159.    * vt100 terminal emulator - KERMIT protocol support
  160.    *
  161. !  *    v2.8 880117 ACS - See the README file
  162.    *    v2.7 870825 ACS - Fixed the "multiple-send" problem in
  163.    *              doksend() et al; show status using the *InfoMsg*()
  164.    *              routines in window.c; fixed erroneous calls to
  165. --- 1,8 ----
  166.   /*************************************************************
  167.    * vt100 terminal emulator - KERMIT protocol support
  168.    *
  169. !  *    v2.8a 880510 ACS - saybye() will allocate packet buffers if it must.
  170. !  *    v2.8 880117 ACS - See vt100.doc.
  171.    *    v2.7 870825 ACS - Fixed the "multiple-send" problem in
  172.    *              doksend() et al; show status using the *InfoMsg*()
  173.    *              routines in window.c; fixed erroneous calls to
  174. ***************
  175. *** 76,83 ****
  176.       rptq,    /* Quote character for repeats */
  177.       ebq,        /* Quote character for 8th bit quoting */
  178.       ackpkt[MAXPACKSIZ+20],    /* ACK/NAK packet buffer */
  179. !     *msgpkt,            /* Message Packet buffer is AllocMem()d */
  180. !     *spackbuf,    /* Dynamically allocated buffer for spack() */
  181.       filnam[40],    /* remote file name */
  182.       snum[10],
  183.       mainmode[10];
  184. --- 77,84 ----
  185.       rptq,    /* Quote character for repeats */
  186.       ebq,        /* Quote character for 8th bit quoting */
  187.       ackpkt[MAXPACKSIZ+20],    /* ACK/NAK packet buffer */
  188. !     *msgpkt = NULL,        /* Message Packet buffer is AllocMem()d */
  189. !     *spackbuf = NULL,    /* Dynamically allocated buffer for spack() */
  190.       filnam[40],    /* remote file name */
  191.       snum[10],
  192.       mainmode[10];
  193. ***************
  194. *** 152,157 ****
  195. --- 153,159 ----
  196.       free_expand(list);
  197.       FreeMem(spackbuf,    (long)(MAXLONGPKS+20));
  198.       FreeMem(msgpkt,    (long)(MAXLONGPKS+20));
  199. +     msgpkt = spackbuf = NULL;
  200.       return(TRUE);
  201.   }
  202.   
  203. ***************
  204. *** 174,179 ****
  205. --- 176,182 ----
  206.       retval  = recsw();
  207.       FreeMem(spackbuf,    (long)(MAXLONGPKS+20));
  208.       FreeMem(msgpkt,    (long)(MAXLONGPKS+20));
  209. +     msgpkt = spackbuf = NULL;
  210.       return(retval);
  211.   }
  212.   
  213. ***************
  214. *** 977,987 ****
  215.   
  216.   saybye()
  217.   {
  218. !    int len,num;
  219.      if(numreqs != 0)    /* Requester's up... */
  220.       Delay(5L);    /* ...so wait for Intuition, just in case. */
  221.      spack('G',n,1,"F");  /* shut down server no more files */
  222.      rpack(&len,&num,ackpkt);
  223.   }
  224.   
  225.   print_our_err()
  226. --- 980,1003 ----
  227.   
  228.   saybye()
  229.   {
  230. !    int len,num, gotmem = 0;
  231. !    if(msgpkt == NULL) {    /* No msgpkt buffer... */
  232. !     msgpkt    = (char *)AllocMem((long)(MAXLONGPKS+20), MEMF_PUBLIC|MEMF_CLEAR);
  233. !     spackbuf  = (char *)AllocMem((long)(MAXLONGPKS+20), MEMF_PUBLIC|MEMF_CLEAR);
  234. !     gotmem = 1;
  235. !    }
  236.      if(numreqs != 0)    /* Requester's up... */
  237.       Delay(5L);    /* ...so wait for Intuition, just in case. */
  238.      spack('G',n,1,"F");  /* shut down server no more files */
  239.      rpack(&len,&num,ackpkt);
  240. +    if(gotmem) {
  241. +     FreeMem(spackbuf,    (long)(MAXLONGPKS+20));
  242. +     FreeMem(msgpkt,    (long)(MAXLONGPKS+20));
  243. +     msgpkt = spackbuf = NULL;
  244. +    }       
  245.   }
  246.   
  247.   print_our_err()
  248. Prereq: 880117
  249. diff -c old/script.c new/script.c
  250. *** old/script.c    Sat May 28 00:40:16 1988
  251. --- new/script.c    Sat May 28 00:27:09 1988
  252. ***************
  253. *** 1,7 ****
  254.   /*************************************************************
  255.    * vt100 terminal emulator - Script file support
  256.    *
  257. !  *    v2.8 880117 ACS - See the README file
  258.    *    v2.7 870825 ACS - Wait for the reply from AbortIO().
  259.    *              Use the *InfoMsg*() routines in window.c.  Provide
  260.    *              for multiple script files on command line
  261. --- 1,8 ----
  262.   /*************************************************************
  263.    * vt100 terminal emulator - Script file support
  264.    *
  265. !  *    v2.8a 880510 ACS - Allow comments on XPROTO and FONT.
  266. !  *    v2.8 880117 ACS - See vt100.doc.
  267.    *    v2.7 870825 ACS - Wait for the reply from AbortIO().
  268.    *              Use the *InfoMsg*() routines in window.c.  Provide
  269.    *              for multiple script files on command line
  270. ***************
  271. *** 866,884 ****
  272.   void cmd_xproto(par)
  273.   char    *par;
  274.   {
  275. !     int i, l = strlen(par);
  276.       char temp[40];
  277.   
  278. !     /* downcase the parameter */
  279. !     for(i=0; i<l; i++) par[i] |= ' ';
  280.   
  281.       p_xproto = MODEMAX + 1;    /* Establish a default */
  282.   
  283. !     for(i=0; i<MODEMAX; i++) {
  284. !     if(strcmp(par, &(*(xprotos[i]))) == 0) {
  285. !         p_xproto = i;
  286. !         break;
  287. !     }
  288.       }
  289.       if(p_xproto >= MODEMAX) {
  290.       p_xproto = MODEMAX - 1;
  291. --- 867,890 ----
  292.   void cmd_xproto(par)
  293.   char    *par;
  294.   {
  295. !     int i, len;
  296.       char temp[40];
  297.   
  298. !     next_wrd(par, &len);
  299.   
  300.       p_xproto = MODEMAX + 1;    /* Establish a default */
  301.   
  302. !     if(len) {
  303. !     par[len] = '\0';
  304. !     /* downcase the parameter */
  305. !     for(i=0; i<len; i++) par[i] |= ' ';
  306. !     for(i=0; i<MODEMAX; i++)
  307. !         if(strcmp(par, &(*(xprotos[i]))) == 0) {
  308. !         p_xproto = i;
  309. !         break;
  310. !         }
  311.       }
  312.       if(p_xproto >= MODEMAX) {
  313.       p_xproto = MODEMAX - 1;
  314. ***************
  315. *** 890,896 ****
  316.       else
  317.           InfoMsg2Line("Script:", temp);
  318.       }
  319. !     if(doing_init == 0) redofile();
  320.   }
  321.   
  322.   void cmd_numkey(par)
  323. --- 896,902 ----
  324.       else
  325.           InfoMsg2Line("Script:", temp);
  326.       }
  327. !     if(!doing_init) redofile();
  328.   }
  329.   
  330.   void cmd_numkey(par)
  331. ***************
  332. *** 958,980 ****
  333.   void cmd_font(par)
  334.   char    *par;
  335.   {
  336. !     char temp[80]; 
  337.   
  338.       /*  myfontname has been initialized from p_font in InitDefaults() in
  339.       ** init.c */
  340.   
  341. !     if(*par) {
  342. !     if(strlen(par) < MAXFONTVARLEN) {
  343. !         strcpy(myfontname, par);
  344. !         strcat(myfontname,FONTSUFFIX);
  345. !     }
  346. !     else {
  347. !         puts("Init:");
  348. !         sprintf(temp, "Font specification too long, \"%s\" used", myfontname);
  349. !         puts(temp);
  350. !     }
  351.       }
  352.       myattr.ta_Name = (STRPTR)myfontname;
  353.   }
  354.   
  355.   void cmd_inter(par)
  356. --- 964,994 ----
  357.   void cmd_font(par)
  358.   char    *par;
  359.   {
  360. !     char temp[80];
  361. !     int  len;
  362.   
  363. +     next_wrd(par, &len);
  364. +     temp[0] = '\0';
  365.       /*  myfontname has been initialized from p_font in InitDefaults() in
  366.       ** init.c */
  367.   
  368. !     if(!len)
  369. !     sprintf(temp, "Init:\nNo font specified, \"%s\" used", myfontname);
  370. !     else {
  371. !     if(*par && len) {
  372. !         if(len < MAXFONTVARLEN) {
  373. !             par[len] = '\0';
  374. !         strcpy(myfontname, par);
  375. !         strcat(myfontname,FONTSUFFIX);
  376. !         } else
  377. !         sprintf(temp, "Init:\nFont specification too long, \"%s\" used", myfontname);
  378. !         }
  379.       }
  380.       myattr.ta_Name = (STRPTR)myfontname;
  381. +     if(*temp)
  382. +     puts(temp);
  383.   }
  384.   
  385.   void cmd_inter(par)
  386. Prereq: 880117
  387. diff -c old/vt100.c new/vt100.c
  388. *** old/vt100.c    Sat May 28 00:40:16 1988
  389. --- new/vt100.c    Sat May 28 00:27:09 1988
  390. ***************
  391. *** 1,7 ****
  392.   /********************************************************************
  393.    *  vt100 terminal emulator with xmodem transfer capability
  394.    *
  395. !  *    v2.8 880117 ACS - See the README file
  396.    *    v2.7 870825 ACS - Provide handling of the msgs from the
  397.    *              info/status window.
  398.    *    v2.6 870227 DBW - bug fixes for all the stuff in v2.5
  399. --- 1,8 ----
  400.   /********************************************************************
  401.    *  vt100 terminal emulator with xmodem transfer capability
  402.    *
  403. !  *    v2.8a 880510 ACS - Don't ReplyMsg too soon.
  404. !  *    v2.8 880117 ACS - See vt100.doc.
  405.    *    v2.7 870825 ACS - Provide handling of the msgs from the
  406.    *              info/status window.
  407.    *    v2.6 870227 DBW - bug fixes for all the stuff in v2.5
  408. ***************
  409. *** 406,412 ****
  410.           qual = NewMessage->Qualifier;
  411.           if(class == RAWKEY)
  412.               iaddr = *((APTR *)NewMessage->IAddress);
  413. !         ReplyMsg( NewMessage );
  414.           switch( class )
  415.               {
  416.               case CLOSEWINDOW:
  417. --- 407,414 ----
  418.           qual = NewMessage->Qualifier;
  419.           if(class == RAWKEY)
  420.               iaddr = *((APTR *)NewMessage->IAddress);
  421. !         else
  422. !             ReplyMsg( NewMessage );
  423.           switch( class )
  424.               {
  425.               case CLOSEWINDOW:
  426. ***************
  427. *** 415,420 ****
  428. --- 417,423 ----
  429.   
  430.               case RAWKEY:
  431.               len = toasc(&(ascstr[0]), code,qual, 100, iaddr, 0);
  432. +             ReplyMsg( NewMessage );
  433.               if (p_echo) {
  434.               ptr = &(ascstr[0]);
  435.               for(i = 0; i < len; i++)
  436. Prereq: 880117
  437. diff -c old/vt100.h new/vt100.h
  438. *** old/vt100.h    Sat May 28 00:40:16 1988
  439. --- new/vt100.h    Sat May 28 00:27:10 1988
  440. ***************
  441. *** 1,7 ****
  442.   /*********************************************************************
  443.    *  a terminal program that has ascii and xmodem transfer capability
  444.    *
  445. !  *    v2.8 880117 ACS - See the README file
  446.    *    v2.7 870825 ACS - See README.
  447.    *    v2.6 870227 DBW - bug fixes for all the stuff in v2.5
  448.    *    v2.5 870214 DBW - more additions (see readme file)
  449. --- 1,7 ----
  450.   /*********************************************************************
  451.    *  a terminal program that has ascii and xmodem transfer capability
  452.    *
  453. !  *    v2.8a 880510 ACS - Update title to 2.8A.
  454.    *    v2.7 870825 ACS - See README.
  455.    *    v2.6 870227 DBW - bug fixes for all the stuff in v2.5
  456.    *    v2.5 870214 DBW - more additions (see readme file)
  457. ***************
  458. *** 21,27 ****
  459.    ********************************************************************/
  460.   
  461.   /********* major version (used for title of terminal window) *********/
  462. ! #define    VERSION    "VT100 (V2.8 ACS 880117) Terminal Window"
  463.   
  464.   /*********** ########  define the compiler type here ######## ********/
  465.   #define    LATTICE    0
  466. --- 21,27 ----
  467.    ********************************************************************/
  468.   
  469.   /********* major version (used for title of terminal window) *********/
  470. ! #define    VERSION    "VT100 (V2.8A ACS 880510) Terminal Window"
  471.   
  472.   /*********** ########  define the compiler type here ######## ********/
  473.   #define    LATTICE    0
  474. diff -c old/Makefile new/Makefile
  475. *** old/Makefile    Sat May 28 00:40:15 1988
  476. --- new/Makefile    Sat May 28 00:27:09 1988
  477. ***************
  478. *** 2,7 ****
  479. --- 2,8 ----
  480.   #
  481.   # Makefile to build vt100 terminal emulator
  482.   #
  483. + #    v2.8a 880510 ACS - Add CFLAGS and LNFLAGS
  484.   #    v2.8 880117 ACS - See the README file
  485.   #    v2.7 870825 ACS - See the README file
  486.   #    v2.6 870227 DBW - bug fixes for all the stuff in v2.5
  487. ***************
  488. *** 18,23 ****
  489. --- 19,29 ----
  490.   #
  491.   # Don't forget to define the right compiler (MANX or LATTICE) in VT100.H
  492.   #
  493. + # Say:
  494. + #    make CFLAGS=-n LNFLAGS=-g vt100         -or-
  495. + #    make CFLAGS=-n LNFLAGS=-g vt100-w
  496. + # for Manx SDB.
  497. + #
  498.   ######################################################################
  499.   
  500.   OBJS    = vt100.o init.o window.o xmodem.o remote.o \
  501. ***************
  502. *** 24,57 ****
  503.         kermit.o script.o expand.o
  504.   
  505.   vt100    : vt100.syms $(OBJS)
  506. !     ln -o vt100 $(OBJS) -lc
  507.   
  508.   vt100-w    : vt100.syms $(OBJS)
  509. !     ln -w -o vt100-w $(OBJS) -lc
  510.   
  511.   vt100.syms : vt100.h
  512. !     cc -A +Hvt100.syms vt100.h
  513.   
  514.   vt100.o    : vt100.c
  515. !     cc +Ivt100.syms vt100.c
  516.   
  517.   init.o    : init.c
  518. !     cc +Ivt100.syms init.c
  519.   
  520.   window.o : window.c
  521. !     cc +Ivt100.syms window.c
  522.   
  523.   xmodem.o : xmodem.c
  524. !     cc +Ivt100.syms xmodem.c
  525.   
  526.   remote.o : remote.c
  527. !     cc +Ivt100.syms remote.c
  528.   
  529.   kermit.o : kermit.c
  530. !     cc +Ivt100.syms kermit.c
  531.   
  532.   script.o : script.c
  533. !     cc +Ivt100.syms script.c
  534.   
  535.   expand.o : expand.c
  536. !     cc +Ivt100.syms expand.c
  537. --- 30,63 ----
  538.         kermit.o script.o expand.o
  539.   
  540.   vt100    : vt100.syms $(OBJS)
  541. !     ln +q -o vt100 $(OBJS) -lc
  542.   
  543.   vt100-w    : vt100.syms $(OBJS)
  544. !     ln +q $(LNFLAGS) -o vt100-w $(OBJS) -lc
  545.   
  546.   vt100.syms : vt100.h
  547. !     cc -A +Hvt100.syms $(CFLAGS) vt100.h
  548.   
  549.   vt100.o    : vt100.c
  550. !     cc +Ivt100.syms $(CFLAGS) vt100.c
  551.   
  552.   init.o    : init.c
  553. !     cc +Ivt100.syms $(CFLAGS) init.c
  554.   
  555.   window.o : window.c
  556. !     cc +Ivt100.syms $(CFLAGS) window.c
  557.   
  558.   xmodem.o : xmodem.c
  559. !     cc +Ivt100.syms $(CFLAGS) xmodem.c
  560.   
  561.   remote.o : remote.c
  562. !     cc +Ivt100.syms $(CFLAGS) remote.c
  563.   
  564.   kermit.o : kermit.c
  565. !     cc +Ivt100.syms $(CFLAGS) kermit.c
  566.   
  567.   script.o : script.c
  568. !     cc +Ivt100.syms $(CFLAGS) script.c
  569.   
  570.   expand.o : expand.c
  571. !     cc +Ivt100.syms $(CFLAGS) expand.c
  572. SHAR_EOF
  573. cat << \SHAR_EOF > README
  574. This archive contains a vt100 emulator with KERMIT and XMODEM file
  575. transfer protocols.  Original work by Dave Wecker, V2.7-V2.8A by
  576. Tony Sumrall.
  577.  
  578.  
  579.  
  580. -------
  581. Thanks:
  582. -------
  583.     To everyone who sent in code, suggestions and fixes!
  584.  
  585.  
  586.  
  587. ---------
  588. Releases:
  589. ---------
  590.     v2.8A 880510 ACS- See Release Notes.
  591.     v2.8 880117 ACS    - See Release Notes.
  592.     v2.7 870825 ACS    - See Release Notes.
  593.     v2.6 870227 DBW    - bug fixes for all the stuff in v2.5
  594.     v2.5 870214 DBW    - more additions (see readme file)
  595.     v2.4 861214 DBW    - lots of fixes/additions
  596.     v2.3 861101 DBW    - minor bug fixes
  597.     v2.2 861012 DBW    - more of the same
  598.     v2.1 860915 DBW    - new features (see README)
  599.     v2.0 860823 DBW    - Major rewrite
  600.     v1.1 860720 DBW    - Switches, 80 cols, colors, bug fixes
  601.     v1.0 860712 DBW    - First version released
  602.  
  603.  
  604.  
  605. ------
  606. Usage:
  607. ------
  608.     Please read VT100.DOC for usage information and examples.
  609.  
  610.  
  611.  
  612. --------------
  613. Release Notes:
  614. --------------
  615. v2.8A 880510 ACS- saybye() was using unallocated memory.
  616.     - vt100.c would ReplyMsg() prior to using RawKeyConvert().
  617.     - LINES 0 should now really allow you to use all available lines
  618.       on your MoreRow'ed screen.  I mean it.
  619.     - allow comments on XPROTO and FONT script command lines.
  620.  
  621. v2.8 880117 ACS - Info/Status window automatically deselected.
  622.     - 1st menu item re-worked.  Now the user need only choose Send,
  623.       Receive, Kermit Get, Kermit Bye and Capture.  Protocol to send or
  624.       receive is selected via the 1st sub-menu from the 1st menu item.
  625.     - New command: XPROTO XMODEM | XMODEMCRC | ASCII | KERMIT to select
  626.       transfer protocol via scripts.
  627.     - User may capture simultaneously with sending or receiving via
  628.       a different protocol by using the Capture menu item.  This item
  629.       changes to Capturing when capture is in effect.
  630.     - Kermit will transfer long packets (up to 1000 bytes).  New cmd:
  631.       "KMAXPACK n" sets maximum packet length to n bytes.  Remember to
  632.       increase your send and/or receive timeouts on your host!!!
  633.     - Added insert/delete character to the recognized escape sequences.
  634.       ESC [ n @ inserts n characters, ESC [ n P deletes n characters
  635.       (thanks to John Wang (jwang@ATRP.MEDIA.MIT.EDU)).  He suggests 
  636.       using the following termcap:
  637.       CA|vt100|amiga|Amiga termcap:al=\E[L:AL=\E[%dL:am:bl=^G:bs:cd=\E[J:\
  638.         :ce=\E[K:cl=\E[;H\E[2J:cm=\E[%i%d;%dH:co#80:cr=^M:cs=\E[%i%d;%dr:\
  639.         :dc=\E[P:DC=\E[%dP:dl=\E[M:DL=\E[%dM:do=^J:ho=\E[H:\
  640.         :is=\E[1;24r\E[24;1H:ic=\E[@:IC=\E[%d@:kb=^H:kd=\E[B:\
  641.         :ke=\E[?1l\E>:kl=\E[D:kr=\E[C:ks=\E[?1h\E=:ku=\E[A:k1=\EOP:\
  642.         :k2=\EOQ:k3=\EOR:k4=\EOS:le=^H:li#24:mb=\E[5m:md=\E[1m:me=\E[m:\
  643.         :mr=\E[7m:nd=\E[C:pt:rc=\E8:rf=/usr/lib/tabset/vt100:\
  644.         :rs=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:sc=\E7:se=\E[m:\
  645.         :sf=^J:so=\E[7m:sr=\EM:ta=^I:ue=\E[m:up=\E[A:us=\E[4m:vc#16:vt#3:xn:
  646.     - Fixed scroll regions.  Now will not wrap-around out of a scroll
  647.       region. (thanks to Tad Guy (ames!xanth.cs.odu.edu!tadguy))
  648.     - Fixed the FileLock() problem (thanks to many!).
  649.     - The "nagging requester" bug was a bug in *my* code (gasp!).  Thanks
  650.       to Joel Swank (joels@tekred.TEK.COM) for finding and squashing it!
  651.     - Fixed overzealous xmodem chopping.  It now strips contiguous
  652.       strings of nulls OR Ctrl-Z (not a mixture) and will avoid writing
  653.       anything if they were all chopped.  Thanks to Wayne Davison
  654.       (drivax!davison--I only had to modify it a little, Wayne).  Also,
  655.       when sending, it now sends a stream of nulls OR Ctrl-Zs, whichever
  656.       is NOT the last character.
  657.     - Removed an extraneous continue in readchar().  Thanks to someone!
  658.       (Sorry, I lost your name and address.)
  659.     - Now uses the default keymap.  All of the old mappings have been
  660.       retained (e.g. Ctrl-2 generates Ctrl-@, Ctrl-6 generates Ctrl-^,
  661.       ALT acts as META key (i.e. sets the high-order bit)).  Note,
  662.       however, that your keymap may preclude the use of the ALT key if
  663.       dead keys are defined.  A future version will support specification
  664.       of a keymap different from the system map.
  665.     - New commands: SENDF file-spec and REC file which will send/receive
  666.       via the default XPROTO setting.  You still have XS, KR, etc.
  667.     - New command: FONT font-name.  Allows the user to specify which
  668.       8-point font to use.  If you want to use your new whippy-font, sau
  669.       FONT whippy-font.  These must be 8-point fonts for now!
  670.     - Saying LINES 0 will use all available lines on the screen (useful
  671.       to you MoreRows groupies).
  672.     - P_unit may be changed in vt100.c to specify a different unit of
  673.       the serial.device to use (for expansion serial ports).  As of this
  674.       writing there are no expansion serial devices...this is just in
  675.       preparation for the future.  Also provided a new INIT command:
  676.       UNIT which accomplishes the same result.
  677.  
  678. v2.7 870825 ACS - Requester is only used for input.  A new window (the
  679.       Info/Xfer Status window) now shows what used to go there and the
  680.       requester now comes up in this window.  The window is sizable,
  681.       draggable, closeable and front-to-backable; when re-opened it
  682.       will appear in its last location with its last dimensions.  The
  683.       window ignores input but will become active when it's first
  684.       displayed as well as when a requester is put up in it.  To
  685.       cancel a transfer request, first ensure that the mail VT100
  686.       windiw is active then hit ESC in it.
  687.     - KERMIT mode has been hardened and wildcarded files can be sent
  688.       to a KERMIT that is *not* in server mode.  E.g. you may say
  689.       RECEIVE to your host's KERMIT then send Foo* -- all files
  690.       starting with Foo in the current directory will be sent.
  691.     - New command line switches -i and +i.  -I says don't use an init
  692.       file, +i file says use "file".  User may also specify script
  693.       files on the command line which will be executed in sequence.
  694.     - New init file command SHORTCUT.  See vt100.doc.
  695.     - I've included the font code.  It looks for an env variable named
  696.       "font" (yes, lowercase) and, if found, uses that font for its
  697.       test.  If you don't like it you may wanna remove it.  I was gonna
  698.       ifdef it but I ran out of time.  Remember that there's a PD set
  699.       cmd to allow Lattice users to set env vars.
  700.     - Nagging bug: On 2nd and subsequent uses of the requester, the
  701.       1st character of the last use is redisplayed.  Intuition bug?
  702.  
  703. v2.6 870227 DBW - bug fixes for all the stuff in v2.5
  704.     - Input requestors are now self selecting (ignore comment in 2.5)
  705.     - Added a BS<->DEL menu item and startup option (SWAP ON/OFF)
  706.     - Renamed dopen/dnext/dclose to diropen/dirnext/dirclose for LATTICE
  707.     - Added a CONVERT option that tells whether KERMIT should downcase
  708.     - MAJOR CHANGE: re write the INPUT/SCRIPT commands, see VT100.DOC
  709.     - Fixed a major problem with Set Directory causing LOCK conflicts
  710.     - Moved the Title up 1 pixel so that it doesn't get cut off anymore
  711.  
  712. v2.5 870214 DBW - more additions (see readme file)
  713.     - All prompting now done through a string requester/gadget.
  714.       NOTE: YOU MUST SELECT THE INPUT STRING OF THE REQUESTER BEFORE
  715.         YOU CAN TYPE A RESPONSE.
  716.     - Local echo mode added (half duplex for Carolyn)
  717.     - BEEP command added to SCRIPT
  718.     - New menu/init/script items:
  719.         CLEAR SCREEN    - clears the screen
  720.          ECHO        - turns on/off half duplex mode
  721.         WRAP        - turns on/off autowrap on long lines
  722.         NUMKEY        - turns on/off numeric keypad mode
  723.         APPCUR        - turns on/off application cursor mode
  724.     - Rewrote toasc() to use qualifier field (no more getting the
  725.       keyboard "stuck")
  726.     - Fixed locking of directories (should now run under workbench ok)
  727.     - Cleaned up VT100.H to really check includes on compile
  728.     - Setting font explicitly to TOPAZ 8 (no more dumb assumptions)
  729.  
  730. v2.4 861214 DBW - lots of fixes/additions
  731.     - Beep should now work under Lattice
  732.     - CreatePort now passes longs (as it should always have)
  733.     - Nested comments in KERMIT.C removed
  734.     - Beep volume of 0 (DisplayBeep) now works
  735.     - snum[] declaration in KERMIT.C fixed
  736.     - multi_xfer is now void and return fixed (in kermit)
  737.     - "." can no longer get "stuck" as the break key
  738.  
  739.     - RIGHT-AMIGA-keys have been added for most menu items
  740.     - The ALT key is now an EIGHTth bit shifter
  741.     - Control-@, Control-2, Control-space send the NULL character
  742.     - Control-6 now sends Control-^
  743.     - Control-- and Control-? now sends Control-_
  744.     - Cursor application mode (<esc>[?1h and <esc>[?1l) now work
  745.     - XMODEM now masks the eighth bit if parity is other than NONE
  746.  
  747. v2.3 861101 DBW - minor bug fixes:
  748.     - added p_wbcolors to allow workbench colors on custom screen
  749.       (In the init file you can specify WBCOLORS to be NO (use color
  750.        definitions in INIT FILE or VT100.H) or YES (use WORKBENCH
  751.        colors for everything)).
  752.     - "$" now sends a kermit-bye (like it says in VT100.DOC).
  753.     - made window/screen heights more reasonable
  754.     - Added ANSI insert line and delete line (<csi><num>L and
  755.       <csi><num>M) to speed up various editors (like emacs).
  756.       NOTE: This is NOT a VT100 sequence (new extension).
  757.     - ctrl-space now also sends a null (along with ^@ and ^`)
  758.     - RAWKEY fixed in WINDOW.C
  759.     - p_wrap fixed in WINDOW.C
  760.     - removed WRDMAX from VT100.H
  761.     - fixed exit with no params in SCRIPT.C
  762.     - fixed parity comparisons in KERMIT.C
  763.     - init file [n+1] changed to [nplus1] to make Lattice happy.
  764.     - cursoron(), cursoroff() changed to one routine cursorflip().
  765.     - long lines shortened to less than 80 characters (for gateways).
  766.     - blanks following exit (or comments) now work in scripts.
  767.  
  768. v2.2 861012 DBW - more of the same:
  769.     - The INIT file "exit" can now chain to a script
  770.     - The SCRIPT command "exit" can now chain to another script
  771.     - Hangup menu item now works.
  772.     - Autowrap can now be set from VT100.H, VT100.INIT (<esc>[?7h l)
  773.     - Control-G is now handled with an audible beep
  774.     - Script now used "^chr" to send control characters
  775.     - The graphics "box" character (a) was added
  776.     - Control-@ and Control-` now send the NULL character
  777.     - Alternate color for BOLD has been re-instated by popular demand
  778.     - Menus have been cleaned up.
  779.     - Lattice compilation cleaned up.
  780.     - No more wordsize parameter since PARITY takes care of all cases
  781.     - Function keys can now call scripts
  782.     - Double shift keys are now handled correctly.
  783.     - Version has been added to the title bar (for bug reports).
  784.  
  785. v2.1 860915 DBW - new features / bug fixes
  786.     - Now identifies as a VT100 (including the response to <esc>Z)
  787.     - Cursor color now gets read in as hex (instead of decimal)
  788.     - REPORTMOUSE taken out of definitions (not needed)
  789.     - XON/XOFF now being handled by the device driver instead of me
  790.     - Literal escape characters have been replaced with \033
  791.     - At init time the user can now specify the input BUFFER size
  792.       (typically between 512 and 2048 bytes) depending on baud rate
  793.     - Script files are now case insensitive for commands
  794.     - XMODEM now turns off the driver XON/XOFF during transfers
  795.     - Graphic rendition now done by the OS instead of me.
  796.     - Initialization files are now searched for in S: instead of C:
  797.     - Forward GOTO bug fixed in the script package.
  798.     - Keypad can now be used in both numeric and application mode
  799.     - General purpose cleanup() routine added for all exits.
  800.     - Utility menu added (sendbreak, hangup, change directory).
  801.       NOTE: hangup is not implemented yet.
  802.     - Full wild card support in file transfers (see vt100.doc).
  803.     - Kermit cleaned up with better filename handling (from host).
  804.     - Script now has CD (changed directory) and SB (send break) commands
  805.     - Added Parity and Wordsize choices in VT100.H, VT100.INIT, menu
  806.       and scripts. (Generates parity from a table).
  807.     - Added 8th bit quoting in KERMIT when using 7 bit words (ODD or
  808.       EVEN parity).
  809.     - Break time can be set from VT100.H, VT100.INIT or a script file.
  810.     - Transfer mode (image or CRLF) can now be set from a script file.
  811.     - Control characters in escape sequences now act like a true VT100.
  812.     - F10 now works from init files.
  813.     - Right (or Left) AMIGA with period (".") sends a BREAK to the host
  814.       from the keyboard.
  815.     - XMODEM status kept down to one line for a file transfer.
  816.  
  817. v2.0 860823 DBW    - Major rewrite:
  818.     - Emulator now compiles under either MANX or LATTICE by defining
  819.       the appropriate compiler type in VT100.H.
  820.     - Sped up code to an effective baud rate of (about) 8k. This means
  821.       that clear text at 4800 baud should be no problem.
  822.     - Added XON/XOFF generation so that characters should not get lost
  823.       any more at 9600 baud (when receiving clear text).
  824.     - Got rid of all command line switches and environment variables.
  825.       Instead upon invocation the program searches first for any file
  826.       named on the command line, then looks for VT100.INIT in the
  827.       current directory and finally searches for C:VT100.INIT.
  828.       All parameters can be set in the init file, and a sample VT100.INIT
  829.       is provided in VT100.DOC that shows all possible options.
  830.     - All parameters that are set by VT100.INIT are defined in VT100.H
  831.       (variables starting with "p_"). This allows you to compile your
  832.       own defaults into the code.
  833.     - You can now set the number of lines (for all you EMACS freaks :-).
  834.       On an interlaced screen this gives you upto a 48 line terminal.
  835.     - WORKBENCH colors are NEVER touched.
  836.     - In an attempt to keep the size down, the color palette menu item
  837.       has been removed (current). Code is about 36K in size with a
  838.       run time image (using workbench screen) of about 88k.
  839.     - Many bugs fixed including reverse scrolling with descenders,
  840.       reverse video at end of line, clearing with scrolling regions,
  841.         ... and 20 or more others.
  842.     - File capture now no longer sends the filename to the host.
  843.     - BOLD (<esc>[1m) has now been added by using an additional color
  844.       when you specify a depth of 2 (instead of 1) bitplane.
  845.     - UNDERLINE (<esc>[4m) has now been added.
  846.     - The handling of remote (host) escape sequences has been completly
  847.       re-written (thanks to Dawn Banks for all the work).
  848.     - Function keys (and shifted function keys) can now be bound to
  849.       arbitrary strings (Jim Ravan gets his macros). See VT100.DOC
  850.       for details.
  851.     - Cursor has no been reduced to the size of a normal character for
  852.       easier readability.
  853.     - XMODEM has been improved (by Steve Drew) to use a timer device
  854.       (for timeouts) and to abort immediately if the user types <ESC>.
  855.     - KERMIT has been completely re-written and appears to work fine,
  856.       thanks to the efforts of Steve Drew.
  857.     - New menu item allows script file support. Module written by
  858.       Steve Drew. See VT100.DOC for details.
  859.  
  860.  
  861.  
  862. ---------------
  863. Known problems:
  864. ---------------
  865.     - None.
  866.  
  867.  
  868.  
  869. --------------------------------------------------
  870. Suggestions/bug fixes not implemented (as of yet):
  871. --------------------------------------------------
  872.     - Custom screen should use a borderless backdrop window
  873.     - Quit from keyboard should be supported (for above)
  874.     - Automatic maximum sizing of window should happen
  875.     - Screen should be resizable
  876.     - AT TIME should be implemented in scripts (besides DELAY)
  877.     - Kermit should create sub directories (when necessary)
  878.     - Use a disk font for graphic character set
  879.     - Allow the mouse to be sent to the host (for various EMACSs)
  880.     - Kermit VM/CMS (IBM) protocol support (it works for me, how about
  881.       you?)
  882.     - Allow the user to use a keymap different from the default one.
  883.     - Allow use of an "external" transfer protocol.
  884.     - Allow use of other than 8-point fonts.
  885.  
  886.  
  887.  
  888. -------------
  889. Installation:
  890. -------------
  891.     The binary files in this archive may be extracted by the bourne shell
  892.     (/bin/sh) or the shar program using the "unshar switch (-u)", contact
  893.     me if you need a copy of this version of shar.
  894.  
  895.     REMEMBER: Set the correct compiler definition in VT100.H
  896.  
  897.  
  898.  
  899. ------
  900. Files:
  901. ------
  902.     README        - this file
  903.     vt100.doc    - documentation for the terminal emulator
  904.     Makefile    - make file for the emulator (under MANX AZTEC-C)
  905.     vt100.h        - include file used by all other modules
  906.     window.c    - manager for window and keyboard
  907.     vt100.c        - main module, handles menus
  908.     remote.c    - handle remote characters (vt100 emulation)
  909.     kermit.c    - kermit protocol (to transfer text files on VMS
  910.               select the CRLF option on the transfer mode menu,
  911.               otherwise use image mode).
  912.     init.c        - startup code
  913.     xmodem.c    - xmodem protocol that understands AMIGA binary and
  914.               text file formats (automatically).
  915.     script.c    - script control package
  916.     expand.c    - filename expansion (wildcards) and dir setting
  917.  
  918.  
  919.  
  920. --------
  921. Contact:
  922. --------
  923. Please send bugs/comments/suggestions/praise for V2.8 to:
  924.  
  925.     Tony Sumrall at USENET: acs@amdahl.com
  926. SHAR_EOF
  927. #    End of shell archive
  928. exit 0
  929. -- 
  930. Bob Page, U of Lowell CS Dept.  page@swan.ulowell.edu  ulowell!page
  931. Have five nice days.
  932.